Skip to content

feat(packaging): migrate source into workspace package directories [PYSDK-135]#656

Open
ari-nz wants to merge 1 commit into
feat/PYSDK-134/workspace-scaffoldingfrom
feat/PYSDK-135/source-migration
Open

feat(packaging): migrate source into workspace package directories [PYSDK-135]#656
ari-nz wants to merge 1 commit into
feat/PYSDK-134/workspace-scaffoldingfrom
feat/PYSDK-135/source-migration

Conversation

@ari-nz
Copy link
Copy Markdown
Collaborator

@ari-nz ari-nz commented May 28, 2026

Release Train — PYSDK-133

Verify wiring on the integration branch first: #661 (draft, targets main)

Step PR Jira Phase Notes
1 #653 PYSDK-134 Workspace scaffolding Merge first — gates everything below
2a #656 PYSDK-135 Source migration After #653
2b #655 PYSDK-138 Dependency split After #653, parallel with 2a
2c #654 PYSDK-139 Tooling updates After #653, parallel with 2a
3 #657 PYSDK-136 Import rewrite After #656
4a #658 PYSDK-137 Slim CLI After #657
4b #659 PYSDK-141 Tests After #657, parallel with 4a
#651 PYSDK-140 CI/CD pipeline Independent — merge any time
#652 PYSDK-142 Docs & migration Independent — merge any time

Retargeting: each PR currently targets its predecessor branch. After the predecessor merges into feat/PYSDK-133/python-sdk-slim, retarget this PR to feat/PYSDK-133/python-sdk-slim before merging it.


This PR — Step 2a: Merge after #653 (workspace scaffolding). Retarget to feat/PYSDK-133/python-sdk-slim first. #657 (import rewrite) depends on this.

Summary

Physically moves all source files from src/aignostics/ into their new workspace package homes. Implements PYSDK-135 (Phase 2 of the aignostics-sdk slim-package split).

Note: imports are intentionally broken after this PR. Import rewrites (aignostics.*aignostics_sdk.* for slim-module consumers) are deferred to PYSDK-136.

What moved where

packages/aignostics-sdk/src/aignostics_sdk/ (slim package)

  • src/aignostics/platform/packages/aignostics-sdk/src/aignostics_sdk/platform/
  • src/aignostics/utils/packages/aignostics-sdk/src/aignostics_sdk/utils/
  • INTERNAL_ORGS constant extracted from src/aignostics/constants.pypackages/aignostics-sdk/src/aignostics_sdk/constants.py
  • packages/aignostics-sdk/src/aignostics_sdk/__init__.py stub replaced with real module docstring

packages/aignostics/src/aignostics/ (full package)

  • src/aignostics/application/packages/aignostics/src/aignostics/application/
  • src/aignostics/wsi/packages/aignostics/src/aignostics/wsi/
  • src/aignostics/dataset/packages/aignostics/src/aignostics/dataset/
  • src/aignostics/bucket/packages/aignostics/src/aignostics/bucket/
  • src/aignostics/qupath/packages/aignostics/src/aignostics/qupath/
  • src/aignostics/notebook/packages/aignostics/src/aignostics/notebook/
  • src/aignostics/gui/packages/aignostics/src/aignostics/gui/
  • src/aignostics/system/packages/aignostics/src/aignostics/system/
  • src/aignostics/third_party/packages/aignostics/src/aignostics/third_party/
  • src/aignostics/cli.pypackages/aignostics/src/aignostics/cli.py
  • src/aignostics/constants.py (full) → packages/aignostics/src/aignostics/constants.py
  • src/aignostics/__init__.pypackages/aignostics/src/aignostics/__init__.py (replaces Phase 1 stub)

Codegen bundling fix

PYSDK-134 left a TODO about bundling codegen/out/aignx into the slim wheel (hatchling cannot reference paths outside the project root). Fixed by:

  1. Created symlink packages/aignostics-sdk/src/aignx../../../codegen/out/aignx
  2. Updated packages/aignostics-sdk/pyproject.toml: packages = ["src/aignostics_sdk", "src/aignx"]

Validation

  • uv sync --all-extras completes successfully
  • find src/ -name "*.py" | grep -v __pycache__ | grep -v codegen returns only src/aignostics.py (the PyInstaller launcher)
  • Symlink resolves: ls packages/aignostics-sdk/src/aignx/codegen/ shows codegen API files

Jira

PYSDK-135

Test plan

  • Verify uv sync --all-extras succeeds
  • Verify ls packages/aignostics-sdk/src/aignostics_sdk/ shows platform/, utils/, constants.py, __init__.py
  • Verify ls packages/aignostics/src/aignostics/ shows all domain modules
  • Verify ls packages/aignostics-sdk/src/aignx/codegen/ resolves through the symlink
  • Verify no Python source files remain in old src/aignostics/ location (except src/aignostics.py PyInstaller launcher)

- platform/ and utils/ → packages/aignostics-sdk/src/aignostics_sdk/
- application/, wsi/, dataset/, bucket/, qupath/, notebook/, gui/, system/, third_party/, cli.py → packages/aignostics/src/aignostics/
- constants.py split: INTERNAL_ORGS → aignostics-sdk/constants.py; remaining constants → aignostics/constants.py
- Created symlink packages/aignostics-sdk/src/aignx → codegen/out/aignx to bundle codegen into slim wheel
- Updated packages/aignostics-sdk/pyproject.toml: packages = ["src/aignostics_sdk", "src/aignx"]
- Updated packages/aignostics-sdk/src/aignostics_sdk/__init__.py with real module docstring
- Moved packages/aignostics/src/aignostics/__init__.py from src/aignostics/ (preserving full content)

Note: imports are intentionally broken at this stage. Import rewrites
(aignostics.* → aignostics_sdk.* for slim-module consumers) are deferred to PYSDK-136.
Copilot AI review requested due to automatic review settings May 28, 2026 11:04
@ari-nz ari-nz requested a review from a team as a code owner May 28, 2026 11:04
@ari-nz ari-nz added the skip:test:long_running Skip long-running tests (≥5min) label May 28, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR advances the workspace package split by relocating source from the legacy src/aignostics/ layout into the new full aignostics and slim aignostics-sdk package directories. It also updates the slim package wheel configuration to include the generated aignx client package.

Changes:

  • Moves full-package domain modules, GUI assets, scripts, and constants into packages/aignostics/src/aignostics/.
  • Moves platform/client utilities into packages/aignostics-sdk/src/aignostics_sdk/.
  • Updates aignostics-sdk wheel packaging to include both aignostics_sdk and aignx.

Reviewed changes

Copilot reviewed 6 out of 145 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/aignostics/__init__.py Removes legacy package initializer from old source tree.
packages/aignostics/src/aignostics/__init__.py Restores full package boot initializer in new package location.
packages/aignostics/src/aignostics/constants.py Adds full-package constants in new location.
packages/aignostics/src/aignostics/cli.py Adds full-package CLI entry module.
packages/aignostics/src/aignostics/application/__init__.py Adds application package exports.
packages/aignostics/src/aignostics/application/_models.py Adds application progress models.
packages/aignostics/src/aignostics/application/_settings.py Adds application settings.
packages/aignostics/src/aignostics/application/_gui/_page_builder.py Adds application GUI route registration.
packages/aignostics/src/aignostics/application/_gui/_page_index.py Adds application homepage GUI.
packages/aignostics/src/aignostics/application/_gui/_utils.py Adds application GUI display helpers.
packages/aignostics/src/aignostics/application/_gui/assets/* Moves application GUI image and animation assets.
packages/aignostics/src/aignostics/bucket/__init__.py Adds bucket package exports.
packages/aignostics/src/aignostics/bucket/_settings.py Adds bucket settings.
packages/aignostics/src/aignostics/bucket/assets/Google-Cloud-logo.png Moves bucket GUI asset.
packages/aignostics/src/aignostics/dataset/__init__.py Adds dataset package exports.
packages/aignostics/src/aignostics/gui/__init__.py Adds GUI package exports.
packages/aignostics/src/aignostics/gui/_error.py Adds GUI error page handling.
packages/aignostics/src/aignostics/gui/_theme.py Adds GUI theme setup.
packages/aignostics/src/aignostics/gui/CLAUDE.md Moves GUI module guidance.
packages/aignostics/src/aignostics/notebook/__init__.py Adds notebook package exports.
packages/aignostics/src/aignostics/notebook/_gui.py Adds notebook GUI page.
packages/aignostics/src/aignostics/notebook/_notebook.py Adds bundled Marimo notebook.
packages/aignostics/src/aignostics/qupath/__init__.py Adds QuPath package exports.
packages/aignostics/src/aignostics/qupath/_gui.py Adds QuPath GUI page.
packages/aignostics/src/aignostics/qupath/_settings.py Adds QuPath settings.
packages/aignostics/src/aignostics/qupath/assets/* Moves QuPath GUI animation assets.
packages/aignostics/src/aignostics/qupath/scripts/*.groovy Moves QuPath helper scripts.
packages/aignostics/src/aignostics/system/__init__.py Adds system package exports.
packages/aignostics/src/aignostics/system/_exceptions.py Adds system exception type.
packages/aignostics/src/aignostics/system/_gui.py Adds system GUI page.
packages/aignostics/src/aignostics/system/_settings.py Adds system settings.
packages/aignostics/src/aignostics/system/assets/system.lottie Moves system GUI asset.
packages/aignostics/src/aignostics/third_party/showinfm/** Moves vendored file-manager helper package.
packages/aignostics/src/aignostics/wsi/__init__.py Adds WSI package exports.
packages/aignostics/src/aignostics/wsi/_cli.py Adds WSI CLI commands.
packages/aignostics/src/aignostics/wsi/_gui.py Adds WSI thumbnail/TIFF routes.
packages/aignostics/src/aignostics/wsi/_service.py Adds WSI service implementation.
packages/aignostics-sdk/pyproject.toml Updates slim wheel packages to include aignx.
packages/aignostics-sdk/src/aignostics_sdk/__init__.py Updates slim package initializer.
packages/aignostics-sdk/src/aignostics_sdk/constants.py Adds slim package constants.
packages/aignostics-sdk/src/aignostics_sdk/platform/__init__.py Adds platform package exports.
packages/aignostics-sdk/src/aignostics_sdk/platform/_api.py Adds authenticated API wrapper.
packages/aignostics-sdk/src/aignostics_sdk/platform/_cli.py Adds platform CLI commands.
packages/aignostics-sdk/src/aignostics_sdk/platform/_constants.py Adds platform constants.
packages/aignostics-sdk/src/aignostics_sdk/platform/_messages.py Adds platform messages.
packages/aignostics-sdk/src/aignostics_sdk/platform/_operation_cache.py Adds platform operation cache utilities.
packages/aignostics-sdk/src/aignostics_sdk/platform/_utils.py Adds platform utility functions.
packages/aignostics-sdk/src/aignostics_sdk/platform/resources/__init__.py Adds platform resources package marker.
packages/aignostics-sdk/src/aignostics_sdk/platform/resources/utils.py Adds platform pagination helper.
packages/aignostics-sdk/src/aignostics_sdk/utils/__init__.py Adds slim utility package exports.
packages/aignostics-sdk/src/aignostics_sdk/utils/_cli.py Adds CLI utility helpers.
packages/aignostics-sdk/src/aignostics_sdk/utils/_console.py Adds shared console setup.
packages/aignostics-sdk/src/aignostics_sdk/utils/_constants.py Adds runtime constants.
packages/aignostics-sdk/src/aignostics_sdk/utils/_di.py Adds discovery helpers.
packages/aignostics-sdk/src/aignostics_sdk/utils/_fs.py Adds filesystem helpers.
packages/aignostics-sdk/src/aignostics_sdk/utils/_health.py Adds health models.
packages/aignostics-sdk/src/aignostics_sdk/utils/_log.py Adds logging setup.
packages/aignostics-sdk/src/aignostics_sdk/utils/_mcp.py Adds MCP helpers.
packages/aignostics-sdk/src/aignostics_sdk/utils/_nav.py Adds GUI navigation helpers.
packages/aignostics-sdk/src/aignostics_sdk/utils/_notebook.py Adds notebook server helpers.
packages/aignostics-sdk/src/aignostics_sdk/utils/_process.py Adds process helpers.
packages/aignostics-sdk/src/aignostics_sdk/utils/_service.py Adds base service class.
packages/aignostics-sdk/src/aignostics_sdk/utils/_settings.py Adds settings utilities.
packages/aignostics-sdk/src/aignostics_sdk/utils/_user_agent.py Adds user-agent helper.
packages/aignostics-sdk/src/aignostics_sdk/utils/boot.py Adds boot sequence.


[tool.hatch.build.targets.wheel]
packages = ["src/aignostics_sdk"]
packages = ["src/aignostics_sdk", "src/aignx"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip:test:long_running Skip long-running tests (≥5min)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants